package com.hrbxlh.interceptor;

import java.util.logging.Logger;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/**
* -------------------------------------------------------
* Copyright (c) 2017, 鑫联华信息科技股份有限公司
* All rights reserved.
* FileName：CommonInterceptor.java
* Description：用于拦截登陆的action，如果没登陆，跳转到登陆页面，
* History：
* Date           Author               Desc
* 2017.4.21		  xzx                 建立
* -------------------------------------------------------
*/
public class CommonInterceptor extends HandlerInterceptorAdapter{
    
	private final Logger log = Logger.getLogger(CommonInterceptor.class.getName());  
    public static final String LAST_PAGE = "beforeLogin";  

    /**  
     * @description 在业务处理器处理请求之前被调用  
     * 				如果返回false  
     *     			从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链 
     * 				如果返回true  
     *    			执行下一个拦截器,直到所有的拦截器都执行完毕  
     *    			再执行被拦截的Controller  
     *    			然后进入拦截器链,  
     *    			从最后一个拦截器往回执行所有的postHandle()  
     *    			接着再从最后一个拦截器往回执行所有的afterCompletion()  
     */    
    @Override    
    public boolean preHandle(HttpServletRequest request,    
            HttpServletResponse response, Object handler) throws Exception {    

        String urlString = request.getRequestURI();   
        Object stuorteaId = request.getSession().getAttribute("stuorteaId");   
        if(stuorteaId == null){  
            log.info("Interceptor：跳转到login页面！");  
            System.out.println("拦截跳转首页");
            if(urlString.endsWith("beforeLogin")){
                return true;
            }
            response.sendRedirect("beforeLogin");
            
            return false;  
        }else{
        	 return true;     
        }  
           
    }    
    
    /** 
     * @description 在业务处理器处理请求执行完成后,生成视图之前执行的动作    
     * 				可在modelAndView中加入数据，比如当前时间 
     */  
    @Override    
    public void postHandle(HttpServletRequest request,    
            HttpServletResponse response, Object handler,    
            ModelAndView modelAndView) throws Exception {     
       
    }    
    
    /**  
     * @description 在DispatcherServlet完全处理完请求后被调用,可用于清理资源等   
     *				当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion()  
     */    
    @Override    
    public void afterCompletion(HttpServletRequest request,    
            HttpServletResponse response, Object handler, Exception ex)    
            throws Exception {        
    }    
  
}    